home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 3.8 KB | 137 lines |
- 10 ' **********************
- 20 ' ** SIDEREAL **
- 30 ' **********************
- 40 '
- 50 CLEAR
- 60 SCREEN 0,0,0
- 70 WIDTH 80
- 80 CLS
- 90 KEY OFF
- 100 PRINT "Current date is ";DATE$
- 110 INPUT "Enter a different date if desired ... ";Q$
- 120 IF Q$ <> "" THEN DATE$ = Q$
- 130 CLS
- 140 PRINT "Current time is approximately ";TIME$
- 150 INPUT "Enter a different time if desired ... ";Q$
- 160 IF Q$ <> "" THEN TIME$ = Q$
- 170 CLS
- 180 INPUT "What is your west longitude ";LONGITUDE
- 190 CLS
- 200 PRINT "Time zone offsets ... (Standard) (Daylight savings)"
- 210 PRINT
- 220 PRINT " Eastern 5 6"
- 230 PRINT " Central 6 7"
- 240 PRINT " Mountain 7 8"
- 250 PRINT " Pacific 8 9"
- 260 PRINT
- 270 INPUT "What is your time zone difference from Greenwhich ";TIMEZONE
- 280 SCREEN 1
- 290 SIZE = 32
- 300 DIM D0(SIZE),D1(SIZE),D2(SIZE),D3(SIZE),D4(SIZE)
- 310 DIM D5(SIZE),D6(SIZE),D7(SIZE),D8(SIZE),D9(SIZE),DC(SIZE)
- 320 DIM HEADING(555)
- 330 LOCATE 1,1
- 340 PRINT "LOCAL MEAN SIDEREAL TIME"
- 350 GET (0,0)-(192,6),HEADING
- 360 CLS
- 370 FOR I = 0 TO 10
- 380 LINE (20,20)-(41,47),0,BF
- 390 LOCATE 1,1
- 400 IF I < 10 THEN PRINT CHR$(48 + I); ELSE PRINT ":";
- 410 FOR ROW = 0 TO 8
- 420 FOR COL = 0 TO 6
- 430 IF POINT(COL,ROW) THEN LINE (COL*3+20,ROW*3+20)-(COL*3+22,ROW*3+22),1,BF
- 440 NEXT COL,ROW
- 450 IF I = 0 THEN GET (20,20)-(40,40),D0
- 460 IF I = 1 THEN GET (20,20)-(40,40),D1
- 470 IF I = 2 THEN GET (20,20)-(40,40),D2
- 480 IF I = 3 THEN GET (20,20)-(40,40),D3
- 490 IF I = 4 THEN GET (20,20)-(40,40),D4
- 500 IF I = 5 THEN GET (20,20)-(40,40),D5
- 510 IF I = 6 THEN GET (20,20)-(40,40),D6
- 520 IF I = 7 THEN GET (20,20)-(40,40),D7
- 530 IF I = 8 THEN GET (20,20)-(40,40),D8
- 540 IF I = 9 THEN GET (20,20)-(40,40),D9
- 550 IF I = 10 THEN GET (20,20)-(40,40),DC
- 560 NEXT I
- 570 CLS
- 580 SCREEN 2
- 590 'LINE (0,0)-(639,199),,B
- 600 LINE (10,5)-(629,194),,B
- 610 LINE (2,30)-(637,35),,B
- 620 LINE (0,32)-(639,32),0
- 630 PAINT (1,1)
- 640 PUT (127,15),HEADING
- 650 '
- 660 WHILE NOT THE.END.OF.THE.WORLD
- 670 WHILE T$ = TIME$
- 680 WEND
- 690 T$ = TIME$
- 700 GOSUB 1030
- 710 GOSUB 1090
- 720 GOSUB 1170
- 730 X = 100
- 740 Y = 77
- 750 GOSUB 850
- 760 LOCATE 17,27
- 770 PRINT "Clock time ... ";T$;
- 780 LOCATE 19,27
- 790 PRINT USING "Longitude ... ###.###";LONGITUDE;
- 800 LOCATE 21,27
- 810 PRINT "Date ... ";DATE$;
- 820 WEND
- 830 '
- 840 ' Subroutine, SIDEREAL$ to screen at X,Y in large characters
- 850 FOR CHAR = 1 TO LEN(SIDEREAL$)
- 860 CHAR$ = MID$(SIDEREAL$,CHAR,1)
- 870 IF CHAR$ = "0" THEN PUT (X,Y),D0,PSET
- 880 IF CHAR$ = "1" THEN PUT (X,Y),D1,PSET
- 890 IF CHAR$ = "2" THEN PUT (X,Y),D2,PSET
- 900 IF CHAR$ = "3" THEN PUT (X,Y),D3,PSET
- 910 IF CHAR$ = "4" THEN PUT (X,Y),D4,PSET
- 920 IF CHAR$ = "5" THEN PUT (X,Y),D5,PSET
- 930 IF CHAR$ = "6" THEN PUT (X,Y),D6,PSET
- 940 IF CHAR$ = "7" THEN PUT (X,Y),D7,PSET
- 950 IF CHAR$ = "8" THEN PUT (X,Y),D8,PSET
- 960 IF CHAR$ = "9" THEN PUT (X,Y),D9,PSET
- 970 IF CHAR$ = ":" THEN PUT (X,Y),DC,PSET
- 980 X = X + 55
- 990 NEXT CHAR
- 1000 RETURN
- 1010 '
- 1020 ' Subroutine, TIME$ into HOUR,MINUTE,SECOND
- 1030 HOUR = VAL(LEFT$(TIME$,2))
- 1040 MINUTE = VAL(MID$(TIME$,4))
- 1050 SECOND = VAL(RIGHT$(TIME$,2))
- 1060 RETURN
- 1070 '
- 1080 ' Subroutine, DATE$ into MONTH,DAY,YEAR
- 1090 MONTH = VAL(LEFT$(DATE$,2))
- 1100 DAY = VAL(MID$(DATE$,4))
- 1110 YEAR = VAL(RIGHT$(DATE$,2))
- 1120 RETURN
- 1130 '
- 1140 ' Subroutine HOUR,MINUTE,SECOND,
- 1150 ' MONTH,DAY,YEAR,
- 1160 ' TIMEZONE,LONGITUDE converted to SIDEREAL$
- 1170 T1 = INT(DAY - 30 + 275 * MONTH / 9)
- 1180 IF MONTH < 3 THEN 1210
- 1190 T1 = T1 - 1
- 1200 IF YEAR MOD 4 THEN T1 = T1 - 1
- 1210 T2 = TIMEZONE + HOUR + MINUTE / 60 + SECOND / 3600
- 1220 T3 = (INT(T1 + 365.25 * YEAR - 0.25) - 0.5) / 36525
- 1230 T4 = 23925.8 + 8.64018E+06 * T3 + 0.0929 * T3 * T3
- 1240 SIDER = 360 * T4 / 86400 + 15.0411 * T2 - LONGITUDE
- 1250 SIDER = (SIDER - 360 * INT(SIDER / 360)) * 24 / 360
- 1260 SHOUR = INT(SIDER)
- 1270 SMINUTE = INT(60 * (SIDER - SHOUR))
- 1280 SSECOND = INT(3600 * SIDER - 3600 * SHOUR - 60 * SMINUTE)
- 1290 SIDEREAL$ = MID$(STR$(SHOUR),1-(SHOUR>9)) + ":"
- 1300 SIDEREAL$ = SIDEREAL$ + MID$(STR$(SMINUTE),1-(SMINUTE>9)) + ":"
- 1310 SIDEREAL$ = SIDEREAL$ + MID$(STR$(SSECOND),1-(SSECOND>9))
- 1320 SP = INSTR(SIDEREAL$," ")
- 1330 IF SP = 0 THEN 1360
- 1340 MID$(SIDEREAL$,SP,1) = "0"
- 1350 GOTO 1320
- 1360 RETURN
-